﻿using System;
using System.ComponentModel;
using System.Windows.Media;
using Might.Infrastructure.DOM;

namespace Might.Infrastructure.Annotations.Graphics {
    /// <summary>
    /// Interface for Icon Editor. Represents graphics primitive.
    /// </summary>
    public interface IGraphicsItem : IDomNode {

        /// <summary>
        /// Gets or sets the visibility of primitive.
        /// <remarks>Default value = true</remarks>
        /// </summary>
        [Category("Appearance")]
        Boolean Visible { get; set; }

        /// <summary>
        /// Gets or sets the width of primitive.
        /// </summary>
        [Category("Layout")]
        double Width { get; set; }

        /// <summary>
        /// Gets or sets the height of primitive.
        /// </summary>
        [Category("Layout")]
        double Height { get; set; }

        /// <summary>
        /// Gets or sets top Y coordinate of primitive.
        /// </summary>
        [Category("Layout")]
        double Top { get; set; }

        /// <summary>
        /// Gets or sets left X coordinate of primitive.
        /// </summary>
        [Category("Layout")]
        double Left { get; set; }

        /// <summary>
        /// The rotation attribute specifies the rotation of the graphical item around 
        /// the point defined by the origin attribute
        /// </summary>
        [Category("Transform")]
        Matrix Transform { get; set; }

        // Manipulation interface for Graphics Primitive

        /// <summary>
        /// Occurs when primitive is changed.
        /// </summary>
        //event EventHandler GraphicsPrimitiveChanged;

        /// <summary>
        /// Call when this primitive is selected in graphics editor.
        /// </summary>
        void Select();

        //bool RaiseEvents { get; set;}
    }
}